package com.ruoyi.system.mapper;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.Page;
import com.ruoyi.system.domain.BuzTaskAwardsTj;
import com.ruoyi.system.domain.BuzTaskUser;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 用户答题情况Mapper接口
 * 
 * @author ruoyi
 * @date 2023-08-31
 */
@Repository
public interface BuzTaskUserMapper 
{
    /**
     * 查询用户答题情况
     * 
     * @param id 用户答题情况主键
     * @return 用户答题情况
     */
    public BuzTaskUser selectBuzTaskUserById(String id);

    /**
     * 查询用户答题情况列表
     * 
     * @param buzTaskUser 用户答题情况
     * @return 用户答题情况集合
     */
    public List<BuzTaskUser> selectBuzTaskUserList(BuzTaskUser buzTaskUser);
    
    public List<Map> getTodayAwards(BuzTaskUser buzTaskUser);

    /**
     * 新增用户答题情况
     * 
     * @param buzTaskUser 用户答题情况
     * @return 结果
     */
    public int insertBuzTaskUser(BuzTaskUser buzTaskUser);

    /**
     * 修改用户答题情况
     * 
     * @param buzTaskUser 用户答题情况
     * @return 结果
     */
    public int updateBuzTaskUser(BuzTaskUser buzTaskUser);
    
    public int updateReceiveAwardsTime(BuzTaskUser buzTaskUser);
    
    /**
     * 修改用户答题情况
     * 
     * @param buzTaskUser 用户答题情况
     * @return 结果
     */
    public int updateSaveQuestion(BuzTaskUser buzTaskUser);
    
    public int updateReceiveAwardsStatus(BuzTaskUser buzTaskUser);
    
    /**
     * 修改用户答题情况
     * 
     * @param buzTaskUser 用户答题情况
     * @return 结果
     */
    public int nullReceiveAwardsTime(BuzTaskUser buzTaskUser);

    /**
     * 删除用户答题情况
     * 
     * @param id 用户答题情况主键
     * @return 结果
     */
    public int deleteBuzTaskUserById(String id);

    /**
     * 批量删除用户答题情况
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBuzTaskUserByIds(String[] ids);

    int getCountByTaskId(String taskId);

    int getCountByTaskIdAndUserId(BuzTaskUser buzTaskUser);

    int getCountByTaskIdAndUserIdPerDay(BuzTaskUser buzTaskUser);
    
    int getAwardCountByLongitudePerDay(String id);
    
    int getAwardCountByPerMinu(Integer minu);
    
    int getCountByTaskIdByMemberIdCurrDay(BuzTaskUser buzTaskUser);
    
    int getCountByTaskIdByLongitude(BuzTaskUser buzTaskUser);

    int getAwardCountByTaskId(String taskId);
    int getAwardCountByTaskIdPerDay(String taskId);
    int getAwardCountByTaskIdAndMemberId(BuzTaskUser buzTaskUser);
    int getAwardCountByTaskIdAndMemberIdPerDay(BuzTaskUser buzTaskUser);
    int getCountByTaskIdByCurrDay(String taskId);
    int getCountByTaskIdByCurrHour(String taskId);
    BuzTaskUser selectBuzTaskUser(BuzTaskUser buzTaskUser);
    // 根据taskid与memberId查询到抽奖次数
    int getAwardTimesByTaskIdAndMemberId(BuzTaskUser buzTaskUser);
    public List<BuzTaskAwardsTj> selectTaskAwardsTjResultList(String taskId);
    public List<BuzTaskAwardsTj> selectTaskAwardsTjResultList2(@Param("taskId") String taskId,@Param("offset") Integer offset,@Param("limit") Integer limit);
    public Integer selectTaskAwardsTjResultListCount(@Param("taskId") String taskId);
    public List<Map> getItemCount(String taskId);
    public List<Map> getAwardsLevelCount(String taskId);
    public List<Map<String, Object>> getTaskAwardsInfoByTask(BuzTaskUser buzTaskUser);
    
    public List<Map<String, Object>> getSubmitListByTask(BuzTaskUser buzTaskUser);
    
    // 根据id 获取所有查询数据
    public List<BuzTaskAwardsTj> selectAllTaskAwardsResultList(String taskId);
    
    /**分开的统计语句**/
    /**参与人数*/
    Integer getJoinPerson(String taskId);
    
    /**参与人次*/
    Integer getJoinPersonTime(String taskId);
    
    /**抽奖总数*/
    Integer getAwardTotal(String taskId);
    
    /**累计中奖金额*/
    Integer getMoneyTotal(String taskId);
    
    /**累计领奖金额*/
    Integer receiveMoneyTotal(String taskId);
    
    /**获奖信息统计*/
    List<Map> getStatisticsAwardsByTaskId(String taskId);
    
}
